package com.appleyk.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;

/**
 * <p>线程池参数配置</p>
 *
 * @author appleyk
 * @version V.0.1.1
 * @blob https://blog.csdn.net/appleyk
 * @github https://github.com/kobeyk
 * @date created on 12:35 2020/12/22
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "spring.thread.pool")
public class ThreadPoolConfig {

    /**核心线程数（如果不够，就创建新的线程）*/
    private Integer corePoolSize;
    /**队列容量（可以是无界也可以是有界，如果超过了核心线程数，就往任务队列里仍）*/
    private Integer queueCapacity;
    /**最大承受（可以new）的线程数（如果任务队列满了，就创建新的线程）*/
    private Integer maximumPoolSize;
    /**线程最大空闲时间，如果达到了这个时间，线程就要被干掉*/
    private Integer keepAliveTime;
    /**任务拒绝执行策略（如果超过了最大线程数，就会触发拒绝执行策略，一共四种，默认抛异常）*/
    private RejectedExecutionHandler handler = new ThreadPoolExecutor.AbortPolicy();

}
